#!/usr/bin/python3
# -*- coding: utf-8 -*-

import re

import allure
from playwright.sync_api import Page

from models.base_page import BasePage


class RuleSubsetPage(BasePage):
    def __init__(self, page: Page):
        super().__init__(page)
        self.route = "rule_subset"

    def check_rule_subset_page_user_guide_element_to_be_visible(self):
        """检查使用指南元素是否可见"""
        with allure.step("检查RuleSubsetPage:使用指南元素是否可见"):
            self.expect.to_be_visible(self.page.locator(".intro"))  # 使用指南栏目
            self.expect.to_be_visible(self.page.get_by_text("使用指南"))
            self.expect.to_be_visible(self.page.get_by_text("收起"))
            self.expect.to_contain_text(self.page.locator("#console"),
                                        "规则子集是一组安全规则的集合，您可以依据自身业务将安全策略分为多组。"
                                        "使用安全组策略时，通过绑定规则子集的方式来实现多组安全策略的批量引用，"
                                        "绑定后该安全组将会应用子集内的所有规则。每个安全组最多可同时绑定 10 个规则子集。")

    def check_rule_subset_page_table_element_to_be_visible(self):
        """检查工具栏及table是否可见"""
        with allure.step("检查RuleSubsetPage:工具栏及table是否可见"):
            self.expect.to_be_visible(self.page.locator(".table-toolbar"))
            self.expect.to_be_visible(self.page.get_by_role("link", name="G", exact=True))
            self.expect.to_be_visible(self.page.locator("a").filter(has_text=re.compile(r"^创建$")))
            self.expect.to_be_visible(self.page.get_by_placeholder(" "))
            self.expect.to_be_visible(self.page.get_by_role("combobox"))

